﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace GomokuClient {
    // 对手列表窗口
    public partial class RivalWindow: Form {
        public interface Callback {
            void OnGetRivalName(string rivalName);  // 获取对手的名字事件
        }

        private Callback mCallback; // 回调

        /**
         * 构造方法。
         * @param callback  回调
         */
        public RivalWindow(Callback callback) {
            // 初始化控件
            this.InitializeComponent();

            // 初始化成员
            mCallback = callback;
        }

        /**
         * "取消"按钮的单击响应方法。
         * @param sender    事件发送者
         * @param e         事件相关信息
         */
        private void ButtonCancel_Click(object sender, EventArgs e) {
            base.Hide();
        }

        /**
         * "确定"按钮的单击响应方法。
         * @param sender    事件发送者
         * @param e         事件相关信息
         */
        private void ButtonOK_Click(object sender, EventArgs e) {
            if (ListViewUsers.SelectedItem != null) {
                string selectedName = ListViewUsers.SelectedItem.ToString();
                mCallback.OnGetRivalName(selectedName);
                base.Hide();
            }
        }

        /**
         * 居中显示。
         * @param parent    父窗口 
         */
        public new void Show(IWin32Window parent) {
            base.Show(parent);
            base.CenterToParent();
        }

        /**
         * 设置用户名列表。
         * @param usernameList  用户名列表
         */
        public void SetUsernameList(List<string> usernameList) {
            ListViewUsers.DataSource = usernameList;
        }
    }
}
